package br.com.os2.pacemark.gui;

import br.com.os2.pacemark.dao.ConvenioDAO;
import br.com.os2.pacemark.model.Convenio;
import br.com.os2.pacemark.util.Mensagem;
import javax.swing.JOptionPane;

/**
 * Classe que representa a tela de adição e edição de convênios.
 * 
 * @author Welignton
 * 
 */
public class ConvenioView extends javax.swing.JDialog {

    /**
     * Variável convenio utilizada para inserir ou editar convênios
     */
    private Convenio convenio;

    /**
     * Variável usada para operações relacionadas oa banco de dados
     *
     */
    private ConvenioDAO convenioDAO;

    /**
     * Variável usada para indicar se a operação a ser realizada é uma inclusão
     * ou edição
     *
     */
    private String operacao;

    /**
     * Variável que referecia ao objeto/janela pai do JDialog atual
     *
     */
    private Convenios telaPai;

    /**
     * Construtor de Convenio
     *
     * @param telaPai Janela pai do JDialog atual
     *
     * @param modal boolean que indica se a tela é ou não modal
     *
     * @param convenio Convenio para incluir ou editar
     *
     * @param operacao String que indica se a operação a ser realizada é uma
     * inclusão ou edição
     *
     *
     */
    public ConvenioView(Convenios telaPai, boolean modal,
            Convenio convenio, String operacao) {

        super(telaPai, true);

        initComponents();

        this.telaPai = telaPai;

        this.convenio = convenio;

        this.operacao = operacao;

        convenioDAO = new ConvenioDAO();

        /**
         * Caso seja uma alteração, preenche as informações *
         */
        if (operacao.equals("EDIT")) {
            
            peencherInformacoes();
            
        }

    }

    /**
     * Método para preencher informações no formulário.
     *
     * Esse método é usado no início da alteração dos dados, para preencher as
     * informações que podem ser alteradas/editadas.
     *
     *
     */
    public void peencherInformacoes() {

        txtNome.setText(convenio.getNome());

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        txtNome = new javax.swing.JTextField();
        btnGravar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jLabel1.setText("Nome*");

        btnGravar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/gravar.png"))); // NOI18N
        btnGravar.setText("Gravar");
        btnGravar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGravarActionPerformed(evt);
            }
        });

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/cancelar.png"))); // NOI18N
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(txtNome)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 204, Short.MAX_VALUE)
                        .addComponent(btnGravar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnCancelar)
                    .addComponent(btnGravar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        setSize(new java.awt.Dimension(436, 143));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGravarActionPerformed

        String nome = txtNome.getText();

        /**
         * Informa ao usuário se há campos obrigatórios varios
         *
         */
        if (nome != null && nome.isEmpty()) {

            Mensagem.novaMensagem("Campos obrigatórios vazios",
                    "Campos marcados com * são obrigatórios",
                    JOptionPane.WARNING_MESSAGE);

        } else {

            convenio.setNome(nome);

            if (operacao.equals("ADD")) {

                convenioDAO.inserir(convenio);

            } else {

                convenioDAO.atualizar(convenio);

            }

            telaPai.listar(convenioDAO.listar());

            dispose();

        }

    }//GEN-LAST:event_btnGravarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed

        dispose();

    }//GEN-LAST:event_btnCancelarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnGravar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField txtNome;
    // End of variables declaration//GEN-END:variables
}
